Sketcher ConstrainSnellsLaw/de

Sketcher ConstrainSnellsLaw

Menüeintrag
Sketch → Skizzen-Beschränkungen → Lichtbrechung (nach Snellius-Gesetz) festlegen
Arbeitsbereich
Sketcher
Standardtastenkürzel
K W
Eingeführt in Version
0.15
Siehe auch
Keiner

Beschreibung

Das Werkzeug Sketcher ConstrainSnellsLaw Legt zwei Linien so fest, dass sie der Lichtbrechung entsprechen, die beim Passieren einer Grenzfläche auftritt, an der zwei Werkstoffe mit unterschiedlichen Brechungsindizes aufeinander treffen. Siehe Snelliussches_Brechungsgesetz.

Snelliussches Gesetz

Anwendung

Die Reihenfolge der Klicks wird durch gelbe Pfeile mit Zahlen angezeigt. n1, n2 zeigen, wo sich die Brechungsindizes befinden.

  1. Zwei Linien, die einen Lichtstrahl darstellen, und eine Kante, die eine Grenzschicht darstellt, vorbereiten. Die Linien sollten sich auf unterschiedlichen Seiten der Grenzschichtkante befinden, die eine Linie, ein Kreisbogen, ein Kreis oder ein Kegelschnitt sein kann.
  2. Einen Endpunkt der ersten Linie, einen Endpunkt der zweiten Linie und die Grenzschichtkante auswählen. Bei der Auswahl ist die Reihenfolge zu beachten.
  3. Es gibt mehrere Möglichkeiten, das Werkzeug aufzurufen:
    • Den Menüeintrag Skizze → Sketcher-Randbedingungen → Lichtbrechung (nach Snellius-Gesetz) festlegen auswählen.
    • Das Tastaturkürzel K dann W.
  1. Der Dialog Brechungsindex-Verhältnis wird geöffnet.
  2. einen Wert für Verhältnis n2/n1 eingeben, wobei n2 für das Medium gilt, in dem sich die zweite ausgewählte Linie befindet, und n1 für das Medium der ersten Linie gilt.
  3. Eine Randbedingung Lichtbrechung (nach Snellius-Gesetz) festlegen wird hinzugefügt. Wenn nötig, werden die Endpunkte mit den Randbedingungen Koinzident festlegen und Punkt auf Objekt festlegen mit der Grenzschichtkante verbunden. Diese zusätzlichen Randbedingungen werden Helferrandbedingungen genannt.

Hinweise

Skripten

Die Randbedingungen können in Makros und von der Python-Konsole aus mit dem folgenden Befehl erstellt werden:

Sketch.addConstraint(Sketcher.Constraint('SnellsLaw',line1,pointpos1,line2,pointpos2,interface,n2byn1))

wobei

  • Sketch ein Skizzenobjekt ist.
  • line1 und pointpos1 zwei ganze Zahlen sind, die den Endpunkt der Linie im Medium mit dem Brechungsindex von n1 identifizieren. line1 ist der Index der Linie in der Skizze (der Rückgabewert von Sketch.addGeometry), und pointpos1 sollte 1 für den Startpunkt und 2 für den Endpunkt sein.
  • line2 und pointpos2 die Indizes sind, die den Endpunkt der zweiten Linie angeben (in Medium n2)
  • interface der Index der Linie ist, die die Position der Grenzfläche zwischen Medium n1 und Medium n2 darstellt.
  • n2byn1 eine Gleitkommazahl ist, die dem Verhältnis der Brechungsindizes n2/n1 entspricht.

Die Seite Sketcher Skripterstellung erklärt die Werte, die für line1, pointpos1, line2, pointpos2 und interface verwendet werden können und enthält weitere Beispiele, wie man Randbedingungen mit Python-Skripten erstellt.

Beispiel:

import Sketcher
import Part
import FreeCAD

StartPoint = 1
EndPoint = 2

f = App.activeDocument().addObject("Sketcher::SketchObject","Sketch")

# add geometry to the sketch
icir = f.addGeometry(Part.Circle(App.Vector(-547.612366,227.479736,0),App.Vector(0,0,1),68.161979))
iline1 = f.addGeometry(Part.LineSegment(App.Vector(-667.331726,244.127090,0),App.Vector(-604.284241,269.275238,0)))
iline2 = f.addGeometry(Part.LineSegment(App.Vector(-604.284241,269.275238,0),App.Vector(-490.940491,256.878265,0)))
# add constraints
# helper constraints:
f.addConstraint(Sketcher.Constraint('Coincident',iline1,EndPoint,iline2,StartPoint)) 
f.addConstraint(Sketcher.Constraint('PointOnObject',iline1,EndPoint,icir)) 
# the Snell's law:
f.addConstraint(Sketcher.Constraint('SnellsLaw',iline1,EndPoint,iline2,StartPoint,icir,1.47))

App.ActiveDocument.recompute()